﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SOM.Common;
using SOM.Model;

namespace SOM.Facade
{
    public class FacadeReclamacao
    {
        private int _idReclamacao;
        private string _dsReclamacao;
        private string _dsNickname;
        private Usuario _usuario;
        private Instituicao _instituicao;
        private Localizacao _localizacao;
        private Video _video;
        private Imagem _imagem;
        private DateTime _dtReclamacao;
        private List<Tag> _tagsList;
        private StatusDaReclamacao _statusReclamacao;

        public int IdReclamacao
        {
            get { return _idReclamacao; }
            set { _idReclamacao = value; }
        }

        public string DsReclamacao
        {
            get { return _dsReclamacao; }
            set { _dsReclamacao = value; }
        }
        public Instituicao Instituicao
        {
            get { return _instituicao; }
            set { _instituicao = value; }
        }

        public Localizacao Localizacao
        {
            get { return _localizacao; }
            set { _localizacao = value; }
        }

        public Video Video
        {
            get { return _video; }
            set { _video = value; }
        }

        public Imagem Imagem
        {
            get { return _imagem; }
            set { _imagem = value; }
        }

        public DateTime DtReclamacao
        {
            get { return _dtReclamacao; }
            set { _dtReclamacao = value; }
        }

        public List<Tag> TagList
        {
            get { return _tagsList; }
            set { _tagsList = value; }
        }


        public string NmInstituicao
        {
            get
            {
                return _instituicao == null ? string.Empty : _instituicao.ins_nm_instituicao;
            }
        }

        public string UrlVideo
        {
            get
            {
                return _video == null ? string.Empty : _video.vdo_ds_url;
            }

        }

        public string UrlImagem
        {
            get
            {
                return _imagem == null ? string.Empty : _imagem.img_ds_url;
            }

        }

        public double? Latitude
        {
            get
            {
                return _localizacao == null ? null : _localizacao.loc_ds_latitude;
            }
        }

        public double? Longitude
        {
            get { return _localizacao == null ? null : _localizacao.loc_ds_longitude; }
        }

        public string DsLocalizacao
        {
            get
            {
                return _localizacao == null ? null : _localizacao.loc_ds_latitude + "," + _localizacao.loc_ds_longitude;
            }
        }

        public string DsTagList
        {
            get
            {
                string dsTags = string.Empty;
                foreach (Tag tag in _tagsList)
                {
                    dsTags += tag.tag_ds_tag + ",";
                }
                return dsTags.TrimEnd(new char[] { ',' });
            }
        }

        public string DsNickname
        {
            get
            {
                return _usuario == null ? string.Empty : _usuario.usr_ds_nickname;
            }
        }

        public Usuario Usuario
        {
            get { return _usuario; }
            set { _usuario = value; }
        }

        public StatusDaReclamacao StatusReclamacao
        {
            get { return _statusReclamacao; }
            set { _statusReclamacao = value; }
        }

        public override bool Equals(object obj)
        {
            if (obj is FacadeReclamacao)
            {
                FacadeReclamacao facade = (FacadeReclamacao)obj;
                return facade.IdReclamacao == this.IdReclamacao;
            }
            return false;
        }
    }
}
